{ "metadata": { "kernelspec": { "codemirror_mode": "scheme", "display_name": "Scheme", "language": "scheme", "name": "calico_scheme_kernel" }, "name": "", "signature": "sha256:3af5bd63319a07c9ae7527b0606988b2d8567eb2f7b28e3286a40afb922bfe33" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "(define in->pre\n", " (lambda (exp)\n", " (cond\n", " ((atom? exp) exp)\n", " (else (list (cadr exp)\n", " (in->pre (car exp))\n", " (in->pre (caddr exp)))))))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "(in->pre '(1 + (2 * 6)))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "(+ 1 (* 2 6))" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "(define eval-infix\n", " (lambda (e)\n", " (eval (in->pre e))))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "(eval-infix '(1 + 1))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "2" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "(define my-list?\n", " (lambda (thing)\n", " (cond\n", " ((null? thing) #t)\n", " ((atom? thing) #f)\n", " (else (my-list? (cdr thing))))))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "(my-list? '())" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "#t" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "(my-list? '(1))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "#t" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "(my-list? '(1 . 2))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "#f" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "(my-list? 1)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "#f" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "(my-list? '(1 2 3 4 5 6 . 9))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "#f" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "(define mylength\n", " (lambda (list)\n", " (cond\n", " ((null? list) 0)\n", " (else (+ 1 (mylength (cdr list)))))))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "(mylength '())" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "0" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "(mylength '(1))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "1" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "(mylength '(1 2 3))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "3" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "(define divide-and-leftover\n", " (lambda (m n)\n", " (d-and-l m n 0)))\n", "\n", "(define d-and-l\n", " (lambda (m n count)\n", " (cond\n", " ((> n m) (list count m))\n", " (else (d-and-l (- m n) n (+ 1 count))))))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "(divide-and-leftover 8 4)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "(2 0)" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "(divide-and-leftover 8 5)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "(1 3)" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "(divide-and-leftover 100 5)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "(20 0)" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "(divide-and-leftover 100 4)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 20, "text": [ "(25 0)" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "(divide-and-leftover 100 3)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "(33 1)" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ ";; Define a procedure set? that determines if it is\n", ";; composed of unique atoms.\n", "\n", "(define set?\n", " " ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "(define my-sum" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "(my-sum '())" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "0" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "(my-sum '(12))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "12" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "(my-sum '(12 23))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 26, "text": [ "35" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "(define exactly-two?\n", " (lambda (a list)\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "(exactly-two? 'a '())" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "(exactly-two? 'a '(a a))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "(exactly-two? 'a '(a b c d))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "(exactly-two? 'a '(b c a d e a))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "(define exactly-two-all?\n", " (lambda (list)\n", " (other list list)))\n", " \n", "(define other\n", " (lambda (l1 l2)\n", " (cond\n", " ((null? l1) #t)\n", " ((= (count (car l1) l2) 2) (other (cdr l1) l2))\n", " (else #f))))\n", " \n", " \n", "(define count\n", " (lambda (a list)\n", " (cond\n", " ((null? list) 0)\n", " ((eq? (car list) a) (+ 1 (count a (cdr list))))\n", " (else (count a (cdr list))))))\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "(exactly-two-all? '(a a b))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 30, "text": [ "#f" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "(exactly-two-all? '(b a a b))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 31, "text": [ "#t" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "(exactly-two-all? '(b a a b))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 34, "text": [ "#t" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ ";; Write a procedure that returns the number of\n", ";; parens in a Scheme list.\n", "\n", "(define count-parens\n", " (lambda (item)\n", " (cond)))\n", " \n", ";; In: (count-parens 1)\n", ";; Out: 0\n", "\n", ";; In: (count-parens '())\n", ";; Out: 2\n", "\n", ";; In: (count-parens '((a) (b)))\n", ";; Out: 6\n", "\n", ";; Hint: it isn't really counting parens!" ], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }